package cn.senjoeson.triper.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.InputMismatchException;
import java.util.Locale;

/**
 * @author Android
 * @date 2018/1/4
 */

public class DateCalcUtils {


    /**
     * 获取指定日后 后 dayAddNum 天的 日期
     *
     * @param startDate 日期，格式为String："2013-9-3";
     * @param dayAddNum 增加天数 格式为int;
     * @return 增加天数之后的具体日期
     */
    public static String getCalcDate(String startDate, int dayAddNum) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINESE);
        Date nowDate = null;
        try {
            nowDate = df.parse(startDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        if (nowDate != null) {
            Date newDate2 = new Date(nowDate.getTime() + dayAddNum * 24 * 60 * 60 * 1000);
            //  SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINESE);
            return df.format(newDate2);
        } else {
            return null;
        }
    }

    /**
     * @param currentDate 当前日期
     * @return 得到当前日期的星期数
     */
    public static String getWeek(String currentDate) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
        SimpleDateFormat format = new SimpleDateFormat("EEEE", Locale.ENGLISH);
        try {
            Date date = simpleDateFormat.parse(currentDate);
            long time = date.getTime();
            String week = format.format(time);
            // System.out.println(format1);
            return week;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * 格式化时间的字符串
     *
     * @param time 时间字符串
     * @return
     */
    public static double[] formatTime(String time) {
        if (time == null)
            return null;
        else if (!time.contains(":"))
            return null;
        else {
            String[] split = time.split(":");
            double[] doubles = new double[2];
            doubles[0] = Integer.parseInt(split[0]);
            double minute = Integer.parseInt(split[1]);
            doubles[1] = minute / 60;
            return doubles;
        }
    }

    /**
     * 判断某个数是否属于这个区间
     *
     * @param targetNumer 需要判断的数
     * @param area        给出的范围 必须是2个数组成的数组
     * @param included    表示是否需要包括area数组的值
     * @return 是/否
     */
    public static boolean isContains(Double targetNumer, Double[] area, boolean included) {
        if (area == null || area.length != 2) {
            throw new InputMismatchException("目标数据输入不符合");
        } else {
            if (included) {
                return targetNumer <= area[1] && targetNumer >= area[0];
            } else {
                return targetNumer < area[1] && targetNumer > area[0];

            }
        }
    }
}
